import { createElement, createTextVnode } from "./vdom/index";

export function renderMixin(Vue) {
  // 创建元素虚拟节点
  Vue.prototype._c = function (...args) {
    return createElement(this, ...args);
  };

  // 创建文本虚拟节点
  Vue.prototype._v = function (text) {
    return createTextVnode(this, text);
  };

  // 转化字符串, s 就是 stringify
  Vue.prototype._s = function (val) {
    return val == null
      ? ""
      : typeof val === "object"
      ? JSON.stringify(val) // 不能直接用 val
      : val;
  };

  Vue.prototype._render = function () {
    const vm = this;
    // log("vm======", vm);
    let render = vm.$options.render;
    let vnode = render.call(vm); // 得到 vnode
    return vnode;
  };
}
